import { useFetch, type UseFetchOptions } from "nuxt/app";
import { useLoadingStore } from "~/stores/loading";

export const useApiFetch: typeof useFetch = (
  request,
  opts?: UseFetchOptions<any>
) => {
  const loadingStore = useLoadingStore();
  // 默认选项，可以根据需要调整
  const defaultOptions: UseFetchOptions<any> = {
    onRequest({ request, options }) {
      loadingStore.show();
    },
    onResponse({ request, response, options }) {
      // 在收到响应后隐藏加载层
      loadingStore.hide();
    },
    onResponseError({ request, response, options }) {
      // 在请求错误时隐藏加载层
      loadingStore.hide();
      // 这里可以添加全局错误处理逻辑，例如显示错误提示
      console.error("API Fetch Error:", response?._data);
    },
  };

  // 合并默认选项和传入的选项
  const options = { ...defaultOptions, ...opts };
  return useFetch(request, options);
};
